#pragma once

#include <util_usb_desc_base.h>

// 配置描述符
typedef struct {
	usb_desc_base_t base;	 // 描述符头
	u16_s total_len;	 // 所有子描述符总长度（不局限于配置描述符）
	u8_s intf_nums;		 // 本配置的接口数
	u8_s cfg_no;		 // 本配置编号
	u8_s cfg_str_idx;	 // 描述本配置的字符串描述符的索引（若无则为0）
	u8_s : 5;		 //
	u8_s spt_rmt_wakeup : 1; // 是否支持远程唤醒
	u8_s is_self_power : 1;	 // 是否自供电（为0则为通过USB总线供电）
	u8_s valid : 1;		 // 是否有效（应置为1）
	u8_s max_pwr;		 // 最大电流需求，单位：2mA。
} __attribute__((packed)) usb_desc_cfg_t;

_Static_assert(sizeof(usb_desc_cfg_t) == 9,
	       "Struct usb_desc_cfg_t defined error!");
